package 纯数组;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.List;

public class No118杨辉三角 {

    /**
     * 给定一个非负整数 numRows，生成杨辉三角的前 numRows 行。
     * 在杨辉三角中，每个数是它左上方和右上方的数的和。
     *
     * 示例:
     * 输入: 5
     * 输出:
     * [
     *      [1],
     *     [1,1],
     *    [1,2,1],
     *   [1,3,3,1],
     *  [1,4,6,4,1]
     * ]
     */

    public List<List<Integer>> generate(int numRows) {

        List<List<Integer>> lists=new ArrayList<>(numRows);

        if(numRows<1){
            return lists;
        }

        List<Integer> baseOne=new ArrayList<>();
        baseOne.add(1);
        lists.add(baseOne);

        for (int i = 1; i < numRows; i++) {

            List<Integer> list=new ArrayList<>();
            //n 拿上一行的 [n-1]+[n]
            for (int j = 0; j <= i; j++) {

                int one = 0;
                if(j>0) {
                    one = lists.get(i - 1).get(j - 1);
                }
                int two = 0;
                if(j<i) {
                    two = lists.get(i - 1).get(j);
                }
                list.add(one+two);
            }
            lists.add(list);
        }

        return lists;
    }

    public static void main(String[] args) {
        No118杨辉三角 n=new No118杨辉三角();
        List<List<Integer>> result = n.generate(5);
        System.out.println(JSON.toJSONString(result));
    }

}
